package com.sc.sysconfig.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sc.sysconfig.entity.SysMenu;
import com.sc.sysconfig.vo.CascaderVO;
import com.sc.sysconfig.vo.OptionVO;
import com.sc.sysconfig.vo.TreeVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 系统菜单映射器
 *
 * @author 徐赫阳
 * @date 2021/09/02
 */
@Mapper
@Component
public interface SysMenuMapper extends BaseMapper<SysMenu> {

    /**
     * 选择菜单选项
     *
     * @return {@link List}<{@link OptionVO}>
     */
    List<OptionVO> selectMenuOption();

    /**
     * 查找级联菜单一级
     *
     * @return {@link List}<{@link CascaderVO}>
     */
    List<CascaderVO> selectMenuCascader();

    /**
     * 查找级联菜单 子项
     *
     * @param parent 父
     * @return {@link List}<{@link CascaderVO}>
     */
    List<CascaderVO> selectMenuCascaderChild(Integer parent);

    /**
     * 选择菜单树顶
     *
     * @return {@link List}<{@link TreeVO}>
     */
    List<TreeVO> selectMenuTreeTop();

    /**
     * 选择菜单树 子项
     *
     * @param parent 父
     * @return {@link List}<{@link TreeVO}>
     */
    List<TreeVO> selectMenuTreeChild(Integer parent);

    /**
     * 选择用户菜单
     *
     * @param loginName 登录名
     * @return {@link List}<{@link SysMenu}>
     */
    List<SysMenu> selectUserMenu(String loginName);

    /**
     * 选择用户菜单的子
     *
     * @param parent    菜单id
     * @param loginName 登录名
     * @return {@link List}<{@link SysMenu}>
     */
    List<SysMenu> selectUserMenuSub(@Param("parent") Integer parent,@Param("loginName") String loginName);

    /**
     * 选择用户菜单的按钮
     *
     * @param parent    菜单id
     * @param loginName 登录名
     * @return {@link List}<{@link String}>
     */
    List<String> selectMenuButtons(@Param("parent") Integer parent,@Param("loginName") String loginName);
}

